Saltar ao contido

Algoritmo de Euclides estendido

Na Galipedia, a Wikipedia en galego.

En aritmética e programación informática, o algoritmo de Euclides estendido é unha extensión do algoritmo de Euclides que calcula, alén do máximo común divisor (mcd) dos números enteiros a e b, tamén os coeficientes da identidade de Bézout, que son números enteiros x e y tal que

.

E sendo a e b positivos, un de x ou y é negativo.

O algoritmo de Euclides estendido é particularmente útil cando a e b son coprimos. Con esa condición temos que x é o inverso multiplicativo modular de a módulo b, e y é o inverso multiplicativo modular de b módulo a.

Do mesmo xeito, o algoritmo de Euclides polinómico estendido permite calcular o inverso multiplicativo en extensións de corpos alxébricos e, en particular, en corpos finitos de orde non prima.

Cun algoritmo moi similar podemos calcular o máximo común divisor polinómico e os coeficientes da identidade de Bézout de dous polinomios dunha variable.

Descrición

[editar | editar a fonte]

O algoritmo de Euclides estándar son unha sucesión de divisións cuxos cocientes non se utilizan. Só se usan os restos. Para o algoritmo estendido tamén fan falta os sucesivos cocientes.

O algoritmo de Euclides estendido procede de xeito similar, mais engade outras dúas secuencias , sendo os cocientes e os restos como segue:

O cálculo tamén se detén cando e dá

  • é o máximo común divisor da entrada e
  • Os coeficientes de Bézout son e é dicir
  • Os cocientes de a e b polo seu máximo común divisor veñen dados por e

A maiores, se a e b son ambos os dous positivos e , daquela

para onde denota a parte enteira de x, é dicir, o maior enteiro non maior que x.

Isto implica que o par de coeficientes de Bézout proporcionado polo algoritmo de Euclides estendido é o par mínimo de coeficientes de Bézout, xa que é o único par que satisfai ambas as desigualdades anteriores.

A continuación un exemplo pode clarificar.

A seguinte táboa mostra como funciona o algoritmo de Euclides estendido coas entradas 240 e 46[1]. O máximo común divisor é a última entrada distinta de cero, 2 na columna "resto". O cálculo detense na fila 6, porque o resto é 0. Os coeficientes de Bézout aparecen nas dúas últimas entradas da penúltima fila. De feito, é doado verificar que -9 240 + 47 46 = 2. Finalmente, as dúas últimas entradas 23 e 120 da última fila son, ata o signo, os cocientes da entrada 46 e 240 polo máximo común divisor 2.

índice i cociente ci−1 Resto ri si ti
0 240 1 0
1 46 0 1
2 240 ÷ 46 = 5 2405 × 46 = 10 15 × 0 = 1 0 − 5 × 1 = −5
3 46 ÷ 10 = 4 464 × 10 = 6 04 × 1 = −4 1 − 4 × −5 = 21
4 10 ÷ 6 = 1 101 × 6 = 4 11 × −4 = 5 −5 − 1 × 21 = −26
5 6 ÷ 4 = 1 61 × 4 = 2 −41 × 5 = −9 21 − 1 × −26 = 47
6 4 ÷ 2 = 2 42 × 2 = 0 52 × −9 = 23 −26 − 2 × 47 = −120

A maiores, os cocientes, en azul, son os coeficientes da fracción continua de 240/46 = [5, 4, 1, 1, 2].

Algoritmo polinómico de Euclides estendido

[editar | editar a fonte]

Para polinomios dunha variable con coeficientes nun corpo, todo funciona de xeito similar, división euclidiana, identidade de Bézout e algoritmo de Euclides estendido. A primeira diferenza é que, na división de Euclides e no algoritmo, a desigualdade ten que ser substituída por unha desigualdade nos graos do polinomio Para o demais, todo o que precede neste artigo segue sendo o mesmo, simplemente substituíndo os enteiros por polinomios.

Unha segunda diferenza reside no límite do tamaño dos coeficientes de Bézout proporcionados polo algoritmo, que é máis preciso no caso polinómico, o que leva ao seguinte teorema.

En matemáticas, é común esixir que o máximo común divisor sexa un polinomio mónico. Para conseguir isto, abonda con dividir cada elemento da saída polo coeficiente principal de Isto permite que, se a e b son coprimos, se obtén 1 no lado dereito da desigualdade de Bézout. En caso contrario, pódese obter calquera constante distinta de cero.


Se a e b son dous polinomios distintos de cero, entón o algoritmo de Euclides estendido produce o único par de polinomios (s, t) tal que

O algoritmo de Euclides estendido é a ferramenta esencial para calcular inversos multiplicativos en estruturas modulares, normalmente os enteiros modulares e as extensións de corpos alxébricos. Un exemplo notable deste último caso son os corpos finitos de orde non prima.

Unha terceira diferenza é que, no caso polinómico, o máximo común divisor defínese só ata a multiplicación por unha constante distinta de cero. Hai varias formas de definir sen ambigüidades un máximo común divisor.

Cálculo de inversos multiplicativos en aritmética modular

[editar | editar a fonte]

Números enteiros modulares

[editar | editar a fonte]

Un elemento a do anel Z/nZ ten un inverso multiplicativo (é dicir, é unha unidade) se é coprimo con n. En particular, se n é primo, a ten un inverso multiplicativo se non é cero (módulo n). Así, Z/nZ é un corpo se e só se n é primo.

A identidade de Bézout afirma que a e n son primos primos se e só se existen números enteiros s e t tal que

Reducindo esta identidade módulo n dáse

Así t, ou, máis exactamente, o resto da división de t por n, é o inverso multiplicativo de a módulo n.

Extensións simples de corpos alxébricos

[editar | editar a fonte]

Por exemplo, se o polinomio usado para definir o corpo finito GF(28) é p = x8 + x4 + x3 + x + 1, e a = x6 + x4 + x + 1 é o elemento cuxo inverso se desexa, entón a realización do algoritmo dá como resultado o cálculo descrito na seguinte táboa embaixo. Lembremos que en corpos de orde 2n, un ten − z = z e z + z = 0 para cada elemento z do corpo). Temos que 1 é o único elemento distinto de cero en GF(2).

paso cociente r s t
p = x8 + x4 + x3 + x + 1 1 0
a = x6 + x4 + x + 1 0 1
1 x2 + 1 x2 = pa (x2 + 1) 1 x2 + 1 = 0 − 1 · (x2 + 1)
2 x4 + x2 x + 1 = ax2 (x4 + x2) x4+x2 = 0 − 1(x4+x2) x6 + x2 + 1 = 1 − (x4 + x2) (x2 + 1)
3 x + 1 1 = x2 − (x + 1) (x + 1) x5+x4+x3+x2+1 = 1 − (x +1)(x4 + x2) x7 + x6 + x3 + x = (x2 + 1) − (x + 1) (x6 + x2 + 1)
4 x + 1 0 = (x + 1) − 1 × (x + 1) x6 + x4 + x + 1 = (x4+x2) − (x+1)(x5+x4+x3+x2+1)

Así, o inverso é x7 + x6 + x3 + x, como se pode confirmar multiplicando os dous elementos xuntos e tomando o resto por p do resultado.

O caso de máis de dous números

[editar | editar a fonte]

Pódese manexar o caso de máis de dous números de forma iterativa.

Véxase tamén

[editar | editar a fonte]

Bibliografía

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]

Ligazóns externas

[editar | editar a fonte]